﻿/**
* Класс строит горизонтальное меню
* @author Firsoff Maxim, ICQ:235859730, email: firsoff_maxim@mail.ru
* @version 0.1/09.03.2008 19:15
*/

package ru.vega_int.firsoff.as3.menu 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.*;
	import ru.vega_int.firsoff.as3.events.MenuEvent;

	public class MenuHorizontal extends Menu
	{
		
		public function MenuHorizontal(data:Array, delimiter:Object, colorSchema:Object, fontSchema:Object) 
		{
			super(data, delimiter, colorSchema, fontSchema, Menu.HORIZONTAL);
			init();
		};
		
		//	METHODS
		
		private function init():void
		{
			//	распределяем _containers
			for (var i:int = 0; i < _totalItems; i++) 
			{
				var item:MenuItem = new MenuItem(data[i], colorSchema, fontSchema);
				item.addEventListener(MenuEvent.CLICK, handleClick);
				_containers.push(item);
				addChild(item);
			};
			allocate();
		};
		
		/**
		 * Распределение
		 */
		private function allocate():void
		{
			for (var i:int = 0; i < _totalItems; i++) 
			{
				
				if(i)
				{
					var delimiterSprite:Sprite = new Sprite();
					var char:TextField;
					addChild(delimiterSprite);
					//	определяем стратегию распределения
					switch (delimiter.type) 
					{
						//	если разделитель строка
						case DELIMITER_CHAR:
							char = new TextField();
							char.embedFonts = true;
							char.selectable = false;
							char.autoSize = TextFieldAutoSize.CENTER;
							char.antiAliasType = fontSchema.antiAliasType;
							char.thickness = fontSchema.thickness;
							char.sharpness = fontSchema.sharpness;
							char.text = delimiter.chars;
							char.setTextFormat(fontSchema.rollout);
							char.x = (delimiterSprite.width - char.textWidth)/2;
							delimiterSprite.addChild(char);
						break;
						
						// если разделитель  - колво пикселей
						case DELIMITER_PIXEL:
							delimiterSprite.graphics.beginFill(0x000000, 0);
							delimiterSprite.graphics.drawRect(0, 0, delimiter.pixels, 10);
						break;
						
						//	смешанный тип - строка+ колво пикселей, здесь сначала применяется пиксели, потом между
						//	пунктами вставляется разделитель
						case DELIMITER_MIX:
							delimiterSprite.graphics.beginFill(0x000000, 0);
							delimiterSprite.graphics.drawRect(0, 0, delimiter.pixels, 10);
							char = new TextField();
							char.embedFonts = true;
							char.selectable = false;
							char.autoSize = TextFieldAutoSize.CENTER;
							char.antiAliasType = fontSchema.antiAliasType;
							char.thickness = fontSchema.thickness;
							char.sharpness = fontSchema.sharpness;
							char.text = delimiter.chars;
							char.setTextFormat(fontSchema.rollout);
							char.x = (delimiterSprite.width - char.textWidth)/2;
							delimiterSprite.addChild(char);
							
							//_containers[]
						break;
					};
					
					delimiterSprite.x = _containers[i - 1].x + _containers[i - 1].width;
					_containers[i].x = delimiterSprite.x + delimiterSprite.width;
				}
			};
		};
		
		/*public override function setSelectedAt(index:uint) :void
		{
			
		};*/
		public override function destroy():void
		{
			
		};
		//	---------------------------------------------
		
		//	GETTERS/SETTERS
		//	---------------------------------------------
		
		//	HANDLERS
		private function handleClick(e:MenuEvent)
		{
			var item:MenuItem = MenuItem(e.target);
			//trace(item.id, item.label)
			setSelectedAt(item.id);
			this.dispatchEvent(e);
		};
		//	---------------------------------------------
	};
};
